Chapter 3 AGILE
	Challenging to develop all requirements in advance
	Advance planning with rigorous testing leads to quality work
	Can be very time consuming
	Not suitable for rapid work
	Specification design testing implementation (maintenance) INTERLEAVED
	Develop in increments
	Tools:
		Automated testing
		Configuration
		Automated production
		
	Requirements ->design
	Design->implement
	Implement->test
	Requirements <-design
	Design<-implement
	Implement<-test

	Common to release new version every two weeks
	Customer gives rapid feedback

	Involve customers
	Embrace change
	Incremental delivery
	Keep it simple
	(small changes)
	People over process

	Requirements as stories (tasks)
	Collective ownership
	Pair programming
	Keep code straightforward
		(refactoring)
	Incremental planning
	On site customers
	Simple design
	Small releases
Sustainable pace
Test first development
	Design test to see if system works
	BEFORE you design the system

AGILE is NOT just sit and type code

Slowly develop and repeatedly test until full system is complete

Larger systems (or system of systems) --harder
Wider usage—harder

PROBLEMS
	Informal –can conflict with legal
	Producing a new system can easier than modifying/maintaining an existing system
	Many different methods called ‘agile’
	May require aspects of planning
	Producing a small system may be easier
	Contracts may be required
	(bids, request for quotes)
	Can have poor documentation
	Hard to keep customers involved
	May be different perspectives among different (groups of) users
	Agile development may require higher skill levels
	Distributed team (in different locations) requires design documents
	
	Do you have a plan?
	Do you have a contract?
	Is getting rapid feedback realistic?
	Cultural issues?
	To integrate large system (or multiple systems into one) 
		Need more configuration information
	Often external rules to follow
		Laws, requirements of owners, union contracts…..
	Cannot have just a single representative
	Cannot just be doing coding
	Need communication methods
	Continuous integration leads to frequent builds